package cn.mdmbct.douyin.common.redis;

import java.util.concurrent.TimeUnit;

/**
 * 抖音open api redis操作接口
 *
 * @author mdmbct  mdmbct@outlook.com
 * @date 2021/3/9 15:07
 * @modified mdmbct
 * @since 1.0
 */
public interface DyRedisOps {

    /**
     * 依据key获取redis中的value
     *
     * @param key        key
     * @param valueClass value的class
     * @param <T>        value类型
     * @return value
     */
    <T> T getValue(String key, Class<T> valueClass);

    /**
     * 设值
     *
     * @param key      key
     * @param value    value
     * @param <T>      value类型
     * @param expire   过期时间
     * @param timeUnit timeUtil
     */
    <T> void setValue(String key, T value, long expire, TimeUnit timeUnit);


    /**
     * 永不过期
     *
     * @param key   key
     * @param value value
     * @param <T>   value类型
     */
    <T> void setValue(String key, T value);

    /**
     * 获取指定key的过期时间
     *
     * @param key key
     * @return 过期时间
     */
    Long getExpire(String key);

    /**
     * 设置过期时间
     *
     * @param key      key
     * @param expire   新的过期时间
     * @param timeUnit timeUtil
     */
    void setExpire(String key, long expire, TimeUnit timeUnit);
}
